﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace AutoStar
{
    public partial class IzmjeniArtikl : Form
    {
        private int idArtikla; //za poredjenje promjena
        private decimal nabavnaCijena;
        private decimal rabat;
        private decimal marza;
        private decimal pdv;
        private decimal kolicina; 

        public IzmjeniArtikl(string idArtikla)
        {
            InitializeComponent();
            this.idArtikla = Convert.ToInt32(idArtikla);
        }

        private void IzmjeniArtikl_Load(object sender, EventArgs e)
        {
            MySqlConnection conn = ConnectionPool.checkOutConnection();
            AutoStarBaza a1 = new AutoStarBaza(conn);

            var a = (from art in a1.artikl
                    join dob in a1.dobavljac
                    on art.dobavljacid equals dob.id
                    join ac in a1.artiklcijena
                    on art.id equals ac.artiklid
                    where art.id == idArtikla && !ac.datumdo.HasValue
                    select new
                    {
                        Naziv = art.naziv,
                        Proizvodjac = art.proizvodjac,
                        Dobavljac = dob.naziv,
                        Rabat = art.rabat,
                        Marza = art.marza,
                        PDV = art.stopaPDV,
                        Cijena = ac.cijena,
                        DatumDo =ac.datumdo,
                        JedinicaMjere=art.jedinicaMjere,
                        KolicinaNaStanju = art.kolicinaNaStanju
                    }).Single();

            textBox1.Text = a.Naziv;
            textBox2.Text = a.Proizvodjac;
            textBox5.Text = a.Dobavljac;
            textBox7.Text = a.Rabat.ToString();
            textBox8.Text = a.Marza.ToString();
            textBox9.Text = a.PDV.ToString();
            textBox3.Text = a.JedinicaMjere;
            textBox4.Text = a.KolicinaNaStanju.ToString();

            decimal cijena = a.Cijena; //izracunaj nabavnu
            if (a.Rabat > 0) //ako ima rabat
            {
                cijena = cijena + (cijena * ((decimal)a.Rabat / 100));
            }
            decimal bezMarze = cijena - (cijena * ((decimal)a.Marza / 100));
            decimal nabavna = bezMarze - (bezMarze * ((decimal)a.PDV / 100));
            textBox10.Text = string.Format("{0:0.##}", nabavna);

            nabavnaCijena = nabavna;
            rabat = (decimal)a.Rabat;
            marza = a.Marza;
            pdv = a.PDV;
            kolicina = a.KolicinaNaStanju;

            ConnectionPool.checkInConnection(conn);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            MySqlConnection conn = ConnectionPool.checkOutConnection();
            AutoStarBaza a1 = new AutoStarBaza(conn);

            var a = (from art in a1.artikl 
                    where art.id == idArtikla
                    select art).Single();
            
            if (rabat != Convert.ToDecimal(textBox7.Text))
            {
                a.rabat = Convert.ToDecimal(textBox7.Text);
                a1.SubmitChanges();
            }
            if (marza != Convert.ToDecimal(textBox8.Text))
            {
                a.marza = Convert.ToDecimal(textBox8.Text);
                a1.SubmitChanges();
            }
            if (pdv != Convert.ToDecimal(textBox9.Text))
            {
                a.stopaPDV = Convert.ToDecimal(textBox9.Text);
                a1.SubmitChanges();
            }
            if (kolicina != Convert.ToDecimal(textBox4.Text))
            {
                a.kolicinaNaStanju = Convert.ToDecimal(textBox4.Text);
                a1.SubmitChanges();
            }
            
            //sada formiraj novu cijenu ako je bilo promjena
            if(nabavnaCijena!=Convert.ToDecimal(textBox10.Text) || kolicina != Convert.ToDecimal(textBox4.Text) ||
               pdv != Convert.ToDecimal(textBox9.Text) || marza != Convert.ToDecimal(textBox8.Text) ||
               rabat != Convert.ToDecimal(textBox7.Text))
            {
                var ac= (from arc in a1.artiklcijena 
                        where idArtikla==arc.artiklid && !arc.datumdo.HasValue
                        select arc).Single();

                ac.datumdo = DateTime.Now;//zavrsi prethodnu cijenu
                a1.SubmitChanges();

                artiklcijena artiklC = new artiklcijena();//unos nove
                decimal nabavna = Convert.ToDecimal(textBox10.Text);
                if (Convert.ToDecimal(textBox7.Text) > 0) //ako ima rabat
                {
                    nabavna = nabavna - (nabavna * (Convert.ToDecimal(textBox7.Text) / 100));
                }
                decimal saMarzom = nabavna + (nabavna * (Convert.ToDecimal(textBox8.Text) / 100));
                decimal konacna = saMarzom + (saMarzom * (Convert.ToDecimal(textBox9.Text) / 100));
                artiklC.cijena = konacna;
                artiklC.datumod = DateTime.Now;
                artiklC.artiklid = idArtikla;
                a1.artiklcijena.InsertOnSubmit(artiklC);
                a1.SubmitChanges();
            }
                            
            ConnectionPool.checkInConnection(conn);
            this.Close();
        }
    }
}
